package com.example.d4_jdk8_time;

import java.time.LocalDate;

/**
 * LocalDate:代表本地日期(年,月,日,星期)
 */
public class Test1_LocalDate {
    public static void main(String[] args) {
        // 0.获取本地日期对象(不可变对象)
        LocalDate localDate = LocalDate.now();
        System.out.println(localDate);

        // 1.获取日期对象中的信息
        int year = localDate.getYear(); // 年
        int month = localDate.getMonthValue(); // 月(1-12)
        int day = localDate.getDayOfMonth(); // 日
        int dayOfYear = localDate.getDayOfYear();  // 一年中的第几天
        int dayOfWeek = localDate.getDayOfWeek().getValue(); // 星期几
        System.out.println(year);
        System.out.println(day);
        System.out.println(dayOfWeek);


        // jdk8之后的修改日期的方法都是有特点的,例如修改都是with开头 加plus
        // 2.直接修改某个信息: withYear,withMonth,withDayOfMonth,withDayOfYear
        // 注意：修改后返回的是一个新的日期对象,不会修改原来的日期对象
        LocalDate localDate2 = localDate.withYear(2099);
        LocalDate localDate3 = localDate2.withMonth(12);
        System.out.println(localDate2);
        System.out.println(localDate3);

        // 3.把某个信息加多少: plusYears,plusMonths,plusDays,plusWeeks
        LocalDate localDate4 = localDate.plusYears(1); // 加一年
        LocalDate localDate5 = localDate4.plusDays(1); // 加一天
        System.out.println(localDate4);
        System.out.println(localDate5);

        // 4.把某个信息减多少：minusYears,minusMonths,minusDays,minusWeeks
        LocalDate localDate6 = localDate.minusYears(1); // 减一年
        LocalDate localDate7 = localDate6.minusDays(1); // 减一天
        System.out.println(localDate6);
        System.out.println(localDate7);

        // 5.获取指定日期的LocalDate对象： public static LocalDate of(int year, int month, int dayOfMonth)
        LocalDate localDate8 = LocalDate.of(2020, 12, 31);
        LocalDate localDate9 = LocalDate.of(2099, 12, 12);
        System.out.println(localDate8);
        System.out.println(localDate9);

        // 6.判断2个日期对象,是否相等,在前还是在后： equals isBefore isAfter
        System.out.println("localDate8.equals(localDate9) = " + localDate8.equals(localDate9)); // false
        System.out.println("localDate8.isBefore(localDate9) = " + localDate8.isBefore(localDate9)); // true
        System.out.println("localDate8.isAfter(localDate9) = " + localDate8.isAfter(localDate9)); // false
    }
}
